import { UI_VERSION } from "@/consts";
import sa from "sa-sdk-javascript";
const serverUrl = import.meta.env.VITE_sensors_server_url;
const prod = import.meta.env.PROD;

/**
 * 神策SDK初始化
 * @param businessType 埋点默认业务线
 */
export const init = (businessType: string): void => {
  sa.init({
    server_url: serverUrl,
    is_track_single_page: true, // 单页面配置，默认开启，若页面中有锚点设计，需要将该配置删除，否则触发锚点会多触发 $pageview 事件
    use_client_time: true,
    send_type: "beacon",
    show_log: !prod,
    heatmap: {
      // 是否开启点击图，default 表示开启，自动采集 $WebClick 事件，可以设置 'not_collect' 表示关闭。
      clickmap: "default",
      // 是否开启触达图，not_collect 表示关闭，不会自动采集 $WebStay 事件，可以设置 'default' 表示开启。
      scroll_notice_map: "not_collect",
    },
  });

  // 以异步加载 SDK 为例，神策 SDK 初始化完成，此时调用设置公共属性的方法，来保证之后的事件都有这两个属性。
  sa.registerPage({
    // eslint-disable-next-line camelcase
    platform_type: "H5",
    // eslint-disable-next-line camelcase
    business_type: businessType || "",
  });
  sa.use("PageLoad", {});
  // 全埋点
  sa.quick("autoTrack");
};

/**
 * 神策埋点
 * @param eventName 事件名称
 * @param properties 上报数据
 */
function addBuriedPoint(eventName: string, properties = {}): void {
  sa.track(eventName, properties);
}

export function addRegisterPage(properties = {}): void {
  sa.registerPage(properties);
}
/**
 * page_view 页面浏览
 * @param properties
 */
export function pageView(properties = {}): void {
  addBuriedPoint("OperactPage_view", properties);
}

/**
 * pageDuration 页面停留时长
 * @param properties
 */
export const pageDuration = (properties = {}) => {
  addBuriedPoint("Page_duration", { ...properties, ui_version: UI_VERSION });
};

/**
 * Page_tabclick 页面tab点击（点击tab触发）
 * @param properties
 */
export const pageTabClick = (properties = {}) => {
  addBuriedPoint("Page_tabclick", { ...properties, ui_version: UI_VERSION });
};

/**
 * Bill_analysis_click  对页面点击（元素点击）
 * @param properties
 */
export const pageIconClick = (properties = {}) => {
  addBuriedPoint("Operactmainpage_icon_click", { ...properties, ui_version: UI_VERSION });
};

/**
 * popup_click  APP弹窗点击
 * @param properties
 */
export const popupClick = (properties = {}) => {
  addBuriedPoint("popup_click", { ...properties, ui_version: UI_VERSION });
};
